<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Pepr3D: pepr3d::Geometry Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="pepr3d_icon.svg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Pepr3D
   &#160;<span id="projectnumber">v1.0</span>
   </div>
   <div id="projectbrief">Pepr3D is a 3D graphics editor designed for FDM printing</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpepr3d_1_1_geometry.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classpepr3d_1_1_geometry-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">pepr3d::Geometry Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>The whole geometry of a model that the user is painting.  
 <a href="classpepr3d_1_1_geometry.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_geometry_8h_source.html">Geometry.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpepr3d_1_1_geometry_1_1_area_highlight.html">AreaHighlight</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A highlight of a part of the <a class="el" href="classpepr3d_1_1_geometry.html" title="The whole geometry of a model that the user is painting.">Geometry</a>.  <a href="structpepr3d_1_1_geometry_1_1_area_highlight.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpepr3d_1_1_geometry_1_1_geometry_state.html">GeometryState</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpepr3d_1_1_geometry_1_1_open_gl_data.html">OpenGlData</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">All OpenGL buffers of the <a class="el" href="classpepr3d_1_1_geometry.html" title="The whole geometry of a model that the user is painting.">Geometry</a>.  <a href="structpepr3d_1_1_geometry_1_1_open_gl_data.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6077ec326305ac7fe4c3f6819b53c2fb"><td class="memItemLeft" align="right" valign="top"><a id="a6077ec326305ac7fe4c3f6819b53c2fb"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Direction</b> = pepr3d::DataTriangle::K::Direction_3</td></tr>
<tr class="separator:a6077ec326305ac7fe4c3f6819b53c2fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44e4ffb13740677b37412b9863c8aedc"><td class="memItemLeft" align="right" valign="top"><a id="a44e4ffb13740677b37412b9863c8aedc"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Circle</b> = DataTriangle::K::Circle_3</td></tr>
<tr class="separator:a44e4ffb13740677b37412b9863c8aedc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fe4812fe3bdb9f9bf29b2a9ed9664ad"><td class="memItemLeft" align="right" valign="top"><a id="a7fe4812fe3bdb9f9bf29b2a9ed9664ad"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Sphere</b> = DataTriangle::K::Sphere_3</td></tr>
<tr class="separator:a7fe4812fe3bdb9f9bf29b2a9ed9664ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71ec638da1019894f11c1ca6a3b42e38"><td class="memItemLeft" align="right" valign="top"><a id="a71ec638da1019894f11c1ca6a3b42e38"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Line3</b> = DataTriangle::K::Line_3</td></tr>
<tr class="separator:a71ec638da1019894f11c1ca6a3b42e38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9aeff66de9a33a389c3de9d0b836819b"><td class="memItemLeft" align="right" valign="top"><a id="a9aeff66de9a33a389c3de9d0b836819b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Vector3</b> = pepr3d::DataTriangle::K::Vector_3</td></tr>
<tr class="separator:a9aeff66de9a33a389c3de9d0b836819b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8e951387d775d43de2581a925f89e7b"><td class="memItemLeft" align="right" valign="top"><a id="ab8e951387d775d43de2581a925f89e7b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Point3</b> = pepr3d::DataTriangle::K::Point_3</td></tr>
<tr class="separator:ab8e951387d775d43de2581a925f89e7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2902716bce3c243a990d3b89b1e3e62b"><td class="memItemLeft" align="right" valign="top"><a id="a2902716bce3c243a990d3b89b1e3e62b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Ft</b> = pepr3d::DataTriangle::K::FT</td></tr>
<tr class="separator:a2902716bce3c243a990d3b89b1e3e62b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf08f06fad7e1acf0298bbb32418ef0a"><td class="memItemLeft" align="right" valign="top"><a id="abf08f06fad7e1acf0298bbb32418ef0a"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Ray</b> = pepr3d::DataTriangle::K::Ray_3</td></tr>
<tr class="separator:abf08f06fad7e1acf0298bbb32418ef0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adec6ddfe2738bb0792535ad33da96f3a"><td class="memItemLeft" align="right" valign="top"><a id="adec6ddfe2738bb0792535ad33da96f3a"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>My_AABB_traits</b> = CGAL::AABB_traits&lt; pepr3d::DataTriangle::K, <a class="el" href="structpepr3d_1_1_data_triangle_a_a_b_b_primitive.html">DataTriangleAABBPrimitive</a> &gt;</td></tr>
<tr class="separator:adec6ddfe2738bb0792535ad33da96f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa14c4ca4e78b66267ff0191397768159"><td class="memItemLeft" align="right" valign="top"><a id="aa14c4ca4e78b66267ff0191397768159"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Tree</b> = CGAL::AABB_tree&lt; My_AABB_traits &gt;</td></tr>
<tr class="separator:aa14c4ca4e78b66267ff0191397768159"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ec337c2f2b15ab3cc65fbef4869a163"><td class="memItemLeft" align="right" valign="top"><a id="a6ec337c2f2b15ab3cc65fbef4869a163"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Ray_intersection</b> = boost::optional&lt; Tree::Intersection_and_primitive_id&lt; Ray &gt;::Type &gt;</td></tr>
<tr class="separator:a6ec337c2f2b15ab3cc65fbef4869a163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a817ca5983c6140981a78819b090bb899"><td class="memItemLeft" align="right" valign="top"><a id="a817ca5983c6140981a78819b090bb899"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>BoundingBox</b> = My_AABB_traits::Bounding_box</td></tr>
<tr class="separator:a817ca5983c6140981a78819b090bb899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af654ca82ebbd5dd354a71af346937c32"><td class="memItemLeft" align="right" valign="top"><a id="af654ca82ebbd5dd354a71af346937c32"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>ColorIndex</b> = GLuint</td></tr>
<tr class="separator:af654ca82ebbd5dd354a71af346937c32"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad9cad69d72176d09ebb2f345ca862b01"><td class="memItemLeft" align="right" valign="top"><a id="ad9cad69d72176d09ebb2f345ca862b01"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ad9cad69d72176d09ebb2f345ca862b01">Geometry</a> ()</td></tr>
<tr class="memdesc:ad9cad69d72176d09ebb2f345ca862b01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:ad9cad69d72176d09ebb2f345ca862b01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab35ff0294173d65bba8fc6f101046ede"><td class="memItemLeft" align="right" valign="top"><a id="ab35ff0294173d65bba8fc6f101046ede"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Geometry</b> (std::vector&lt; <a class="el" href="classpepr3d_1_1_data_triangle.html">DataTriangle</a> &gt; &amp;&amp;triangles)</td></tr>
<tr class="separator:ab35ff0294173d65bba8fc6f101046ede"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb5ab45b0a5f5d84b38fae0d1bbc71ab"><td class="memItemLeft" align="right" valign="top"><a id="abb5ab45b0a5f5d84b38fae0d1bbc71ab"></a>
std::vector&lt; glm::vec3 &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getVertexBuffer</b> ()</td></tr>
<tr class="separator:abb5ab45b0a5f5d84b38fae0d1bbc71ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd5c4c218183865d75c38534918f3cdd"><td class="memItemLeft" align="right" valign="top"><a id="acd5c4c218183865d75c38534918f3cdd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>polyhedronValid</b> () const</td></tr>
<tr class="separator:acd5c4c218183865d75c38534918f3cdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09ca8294ff86ad47e8cbd2051e0b02df"><td class="memItemLeft" align="right" valign="top"><a id="a09ca8294ff86ad47e8cbd2051e0b02df"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>polyVertCount</b> () const</td></tr>
<tr class="separator:a09ca8294ff86ad47e8cbd2051e0b02df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c1c327d2f449865a3c66fae52b0b54a"><td class="memItemLeft" align="right" valign="top"><a id="a2c1c327d2f449865a3c66fae52b0b54a"></a>
const <a class="el" href="structpepr3d_1_1_geometry_1_1_open_gl_data.html">OpenGlData</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getOpenGlData</b> () const</td></tr>
<tr class="separator:a2c1c327d2f449865a3c66fae52b0b54a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1550192711eb10ddb685c08d15ef9922"><td class="memItemLeft" align="right" valign="top"><a id="a1550192711eb10ddb685c08d15ef9922"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a1550192711eb10ddb685c08d15ef9922">updateOpenGlBuffers</a> ()</td></tr>
<tr class="memdesc:a1550192711eb10ddb685c08d15ef9922"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update buffers used by openGl. Should only be called when they are dirty. <br /></td></tr>
<tr class="separator:a1550192711eb10ddb685c08d15ef9922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad25fda5afe4c73c0fd9dbd4bf77952b1"><td class="memItemLeft" align="right" valign="top"><a id="ad25fda5afe4c73c0fd9dbd4bf77952b1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ad25fda5afe4c73c0fd9dbd4bf77952b1">updateTemporaryDetailedData</a> ()</td></tr>
<tr class="memdesc:ad25fda5afe4c73c0fd9dbd4bf77952b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update temporary detailed data like detailed AABB tree and detailed Mesh This is a slow operation. <br /></td></tr>
<tr class="separator:ad25fda5afe4c73c0fd9dbd4bf77952b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a995a46878723dd2108960ad3163097b5"><td class="memItemLeft" align="right" valign="top"><a id="a995a46878723dd2108960ad3163097b5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>isTemporaryDetailedDataValid</b> () const</td></tr>
<tr class="separator:a995a46878723dd2108960ad3163097b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a672f356239790e119faf9fedac88826c"><td class="memItemLeft" align="right" valign="top"><a id="a672f356239790e119faf9fedac88826c"></a>
glm::vec3&#160;</td><td class="memItemRight" valign="bottom"><b>getBoundingBoxMin</b> () const</td></tr>
<tr class="separator:a672f356239790e119faf9fedac88826c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99b2474e709c4965c4936c69c094b02b"><td class="memItemLeft" align="right" valign="top"><a id="a99b2474e709c4965c4936c69c094b02b"></a>
glm::vec3&#160;</td><td class="memItemRight" valign="bottom"><b>getBoundingBoxMax</b> () const</td></tr>
<tr class="separator:a99b2474e709c4965c4936c69c094b02b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad37135e84945f5e02ee7135a7fa57429"><td class="memItemLeft" align="right" valign="top"><a id="ad37135e84945f5e02ee7135a7fa57429"></a>
const <a class="el" href="structpepr3d_1_1_geometry_1_1_area_highlight.html">Geometry::AreaHighlight</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getAreaHighlight</b> () const</td></tr>
<tr class="separator:ad37135e84945f5e02ee7135a7fa57429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a671769c7156f27e4666d4db982e30ec6"><td class="memItemLeft" align="right" valign="top"><a id="a671769c7156f27e4666d4db982e30ec6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>hideHighlight</b> ()</td></tr>
<tr class="separator:a671769c7156f27e4666d4db982e30ec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7246a4afe6b3e0624e3b22f7b28aea9e"><td class="memItemLeft" align="right" valign="top"><a id="a7246a4afe6b3e0624e3b22f7b28aea9e"></a>
const <a class="el" href="classpepr3d_1_1_data_triangle.html">DataTriangle</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getTriangle</b> (const size_t triangleIndex) const</td></tr>
<tr class="separator:a7246a4afe6b3e0624e3b22f7b28aea9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93214e41fbec98dd0e144af5643611e8"><td class="memItemLeft" align="right" valign="top"><a id="a93214e41fbec98dd0e144af5643611e8"></a>
const <a class="el" href="classpepr3d_1_1_data_triangle.html">DataTriangle</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getTriangle</b> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> triangleId) const</td></tr>
<tr class="separator:a93214e41fbec98dd0e144af5643611e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58031509df8f5a9a83e98106cc37af4a"><td class="memItemLeft" align="right" valign="top"><a id="a58031509df8f5a9a83e98106cc37af4a"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getTriangleColor</b> (const size_t triangleIndex) const</td></tr>
<tr class="separator:a58031509df8f5a9a83e98106cc37af4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83359891c1ed0cf815a5367c56c78d3e"><td class="memItemLeft" align="right" valign="top"><a id="a83359891c1ed0cf815a5367c56c78d3e"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getTriangleColor</b> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> triangleId) const</td></tr>
<tr class="separator:a83359891c1ed0cf815a5367c56c78d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acca576cfa8a735ecfe36e4fca67204d8"><td class="memItemLeft" align="right" valign="top"><a id="acca576cfa8a735ecfe36e4fca67204d8"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#acca576cfa8a735ecfe36e4fca67204d8">getTriangleCount</a> () const</td></tr>
<tr class="memdesc:acca576cfa8a735ecfe36e4fca67204d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of triangles in the whole mesh. <br /></td></tr>
<tr class="separator:acca576cfa8a735ecfe36e4fca67204d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08d96522ac82d058abd68bbda3ac1201"><td class="memItemLeft" align="right" valign="top"><a id="a08d96522ac82d058abd68bbda3ac1201"></a>
const <a class="el" href="classpepr3d_1_1_color_manager.html">ColorManager</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getColorManager</b> () const</td></tr>
<tr class="separator:a08d96522ac82d058abd68bbda3ac1201"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a416e1fbfffdbeab4f5775fd0987d312d"><td class="memItemLeft" align="right" valign="top"><a id="a416e1fbfffdbeab4f5775fd0987d312d"></a>
<a class="el" href="classpepr3d_1_1_color_manager.html">ColorManager</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getColorManager</b> ()</td></tr>
<tr class="separator:a416e1fbfffdbeab4f5775fd0987d312d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3af18af2bd43104f8024ca24c8541d"><td class="memItemLeft" align="right" valign="top"><a id="a7b3af18af2bd43104f8024ca24c8541d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>isSimpleTriangle</b> (size_t triangleIdx) const</td></tr>
<tr class="separator:a7b3af18af2bd43104f8024ca24c8541d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0e251c83044d0cd06c50ded6cee21cb"><td class="memItemLeft" align="right" valign="top"><a id="ae0e251c83044d0cd06c50ded6cee21cb"></a>
const <a class="el" href="structpepr3d_1_1_geometry_progress.html">GeometryProgress</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getProgress</b> () const</td></tr>
<tr class="separator:ae0e251c83044d0cd06c50ded6cee21cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b33233684966de8e2f4ba4fa3d6f02d"><td class="memItemLeft" align="right" valign="top"><a id="a3b33233684966de8e2f4ba4fa3d6f02d"></a>
<a class="el" href="structpepr3d_1_1_geometry_progress.html">GeometryProgress</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getProgress</b> ()</td></tr>
<tr class="separator:a3b33233684966de8e2f4ba4fa3d6f02d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81c9e23b272c99b9e1692ce1900c2b15"><td class="memItemLeft" align="right" valign="top"><a id="a81c9e23b272c99b9e1692ce1900c2b15"></a>
PolyhedronData::Mesh *&#160;</td><td class="memItemRight" valign="bottom"><b>getMeshDetailed</b> () const</td></tr>
<tr class="separator:a81c9e23b272c99b9e1692ce1900c2b15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90455dda02cab7e2affdda58966a831b"><td class="memItemLeft" align="right" valign="top"><a id="a90455dda02cab7e2affdda58966a831b"></a>
const std::unordered_map&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a>, PolyhedronData::face_descriptor &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getMeshDetailedFaceDescs</b> () const</td></tr>
<tr class="separator:a90455dda02cab7e2affdda58966a831b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a586922a1b2662d6455bce899af40b6b2"><td class="memItemLeft" align="right" valign="top"><a id="a586922a1b2662d6455bce899af40b6b2"></a>
const PolyhedronData::Mesh::Property_map&lt; PolyhedronData::face_descriptor, <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getMeshDetailedIdMap</b> () const</td></tr>
<tr class="separator:a586922a1b2662d6455bce899af40b6b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a027715ec109b060ffc8b420947c4fde0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a027715ec109b060ffc8b420947c4fde0">loadNewGeometry</a> (const std::string &amp;fileName)</td></tr>
<tr class="memdesc:a027715ec109b060ffc8b420947c4fde0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads new geometry into the private data, rebuilds the buffers and other data structures automatically.  <a href="#a027715ec109b060ffc8b420947c4fde0">More...</a><br /></td></tr>
<tr class="separator:a027715ec109b060ffc8b420947c4fde0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa473f80280346656024fc494994c065e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aa473f80280346656024fc494994c065e">setTriangleColor</a> (const size_t triangleIndex, const size_t newColor)</td></tr>
<tr class="memdesc:aa473f80280346656024fc494994c065e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set new triangle color.  <a href="#aa473f80280346656024fc494994c065e">More...</a><br /></td></tr>
<tr class="separator:aa473f80280346656024fc494994c065e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a8c000a3009ae4372ce223b27765ae6"><td class="memItemLeft" align="right" valign="top"><a id="a0a8c000a3009ae4372ce223b27765ae6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a0a8c000a3009ae4372ce223b27765ae6">setTriangleColor</a> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> triangleId, const size_t newColor)</td></tr>
<tr class="memdesc:a0a8c000a3009ae4372ce223b27765ae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set new triangle color. <br /></td></tr>
<tr class="separator:a0a8c000a3009ae4372ce223b27765ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace58dc7a4182240000e9b773cb8da4ee"><td class="memItemLeft" align="right" valign="top">std::optional&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ace58dc7a4182240000e9b773cb8da4ee">intersectMesh</a> (const ci::Ray &amp;ray) const</td></tr>
<tr class="memdesc:ace58dc7a4182240000e9b773cb8da4ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Intersects the mesh with the given ray and returns the index of the triangle intersected, if it exists. Example use: generate ray based on a mouse click, call this method, then call setTriangleColor.  <a href="#ace58dc7a4182240000e9b773cb8da4ee">More...</a><br /></td></tr>
<tr class="separator:ace58dc7a4182240000e9b773cb8da4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a039de87ce062281b93132481ca7ddba8"><td class="memItemLeft" align="right" valign="top"><a id="a039de87ce062281b93132481ca7ddba8"></a>
std::optional&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a039de87ce062281b93132481ca7ddba8">intersectMesh</a> (const ci::Ray &amp;ray, glm::vec3 &amp;outPos) const</td></tr>
<tr class="memdesc:a039de87ce062281b93132481ca7ddba8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Intersects the mesh with the given ray and returns the index of the triangle intersected, if it exists. Additionally outputs intersection point to the outPos param Example use: generate ray based on a mouse click, call this method, then call setTriangleColor. <br /></td></tr>
<tr class="separator:a039de87ce062281b93132481ca7ddba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae68a633ab4ab435156e0b03e64c9ede9"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ae68a633ab4ab435156e0b03e64c9ede9">intersectDetailedMesh</a> (const ci::Ray &amp;ray)</td></tr>
<tr class="memdesc:ae68a633ab4ab435156e0b03e64c9ede9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Intersects the detailed mesh with the given ray and returns the ID of the triangle intersected, if it exists.  <a href="#ae68a633ab4ab435156e0b03e64c9ede9">More...</a><br /></td></tr>
<tr class="separator:ae68a633ab4ab435156e0b03e64c9ede9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f784973726ce83893d8ec3fcdf9ff1"><td class="memItemLeft" align="right" valign="top"><a id="a69f784973726ce83893d8ec3fcdf9ff1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a69f784973726ce83893d8ec3fcdf9ff1">highlightArea</a> (const ci::Ray &amp;ray, const struct <a class="el" href="structpepr3d_1_1_brush_settings.html">BrushSettings</a> &amp;settings)</td></tr>
<tr class="memdesc:a69f784973726ce83893d8ec3fcdf9ff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Highlight an area around the intersection point. All points on a continuous surface closer than the size are highlighted. <br /></td></tr>
<tr class="separator:a69f784973726ce83893d8ec3fcdf9ff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c6b8ef6f157f8bb818e38f6e2e49b37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a6c6b8ef6f157f8bb818e38f6e2e49b37">paintWithShape</a> (const ci::Ray &amp;ray, const std::vector&lt; Point3 &gt; &amp;shape, size_t color, bool paintBackfaces=false)</td></tr>
<tr class="memdesc:a6c6b8ef6f157f8bb818e38f6e2e49b37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Paint area with a shaped brush.  <a href="#a6c6b8ef6f157f8bb818e38f6e2e49b37">More...</a><br /></td></tr>
<tr class="separator:a6c6b8ef6f157f8bb818e38f6e2e49b37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a152673dacbe299a55ee9dc6a2403d6a5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a152673dacbe299a55ee9dc6a2403d6a5">paintWithShape</a> (const ci::Ray &amp;ray, const std::vector&lt; DataTriangle::Triangle &gt; &amp;triangles, size_t color)</td></tr>
<tr class="memdesc:a152673dacbe299a55ee9dc6a2403d6a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Paint area with a shaped brush.  <a href="#a152673dacbe299a55ee9dc6a2403d6a5">More...</a><br /></td></tr>
<tr class="separator:a152673dacbe299a55ee9dc6a2403d6a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4593a2aa8017add96d6cd7e177a0cf1"><td class="memItemLeft" align="right" valign="top"><a id="ab4593a2aa8017add96d6cd7e177a0cf1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ab4593a2aa8017add96d6cd7e177a0cf1">paintAreaWithSphere</a> (const ci::Ray &amp;ray, const <a class="el" href="structpepr3d_1_1_brush_settings.html">BrushSettings</a> &amp;settings)</td></tr>
<tr class="memdesc:ab4593a2aa8017add96d6cd7e177a0cf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Paint continuous spherical area with a brush of specified size. <br /></td></tr>
<tr class="separator:ab4593a2aa8017add96d6cd7e177a0cf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d2ae86fca37592a5dbb93784ca4ef0"><td class="memTemplParams" colspan="2">template&lt;typename ColorFunc &gt; </td></tr>
<tr class="memitem:ae6d2ae86fca37592a5dbb93784ca4ef0"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ae6d2ae86fca37592a5dbb93784ca4ef0">changeColorIds</a> (const ColorFunc &amp;colorFunc)</td></tr>
<tr class="memdesc:ae6d2ae86fca37592a5dbb93784ca4ef0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change all color ID's from one to another.  <a href="#ae6d2ae86fca37592a5dbb93784ca4ef0">More...</a><br /></td></tr>
<tr class="separator:ae6d2ae86fca37592a5dbb93784ca4ef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80198ecc7f17d1db360ab2bf50b7f594"><td class="memItemLeft" align="right" valign="top"><a id="a80198ecc7f17d1db360ab2bf50b7f594"></a>
<a class="el" href="structpepr3d_1_1_geometry_1_1_geometry_state.html">GeometryState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a80198ecc7f17d1db360ab2bf50b7f594">saveState</a> () const</td></tr>
<tr class="memdesc:a80198ecc7f17d1db360ab2bf50b7f594"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save current state into a struct so that it can be restored later (<a class="el" href="classpepr3d_1_1_command_manager.html" title="CommandManager handles all undoable operations on target in the form of commands See.">CommandManager</a> target requirement) <br /></td></tr>
<tr class="separator:a80198ecc7f17d1db360ab2bf50b7f594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe9b03fabcd1d3fca4108eaf34c6e70"><td class="memItemLeft" align="right" valign="top"><a id="aebe9b03fabcd1d3fca4108eaf34c6e70"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aebe9b03fabcd1d3fca4108eaf34c6e70">loadState</a> (const <a class="el" href="structpepr3d_1_1_geometry_1_1_geometry_state.html">GeometryState</a> &amp;)</td></tr>
<tr class="memdesc:aebe9b03fabcd1d3fca4108eaf34c6e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load previous state from a struct (<a class="el" href="classpepr3d_1_1_command_manager.html" title="CommandManager handles all undoable operations on target in the form of commands See.">CommandManager</a> target requirement) <br /></td></tr>
<tr class="separator:aebe9b03fabcd1d3fca4108eaf34c6e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a49d4588081ba91381fbd86e3837e75"><td class="memTemplParams" colspan="2"><a id="a4a49d4588081ba91381fbd86e3837e75"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a4a49d4588081ba91381fbd86e3837e75"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a4a49d4588081ba91381fbd86e3837e75">bucket</a> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> startTriangle, const StoppingCondition &amp;stopFunctor)</td></tr>
<tr class="memdesc:a4a49d4588081ba91381fbd86e3837e75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spreads as BFS, starting from startTriangle to wherever it can reach. Stopping is handled by the StoppingCondition functor/lambda. A vector of reached triangle indices is returned;. <br /></td></tr>
<tr class="separator:a4a49d4588081ba91381fbd86e3837e75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6b768a13d349b8e5a88e1210e034fb"><td class="memTemplParams" colspan="2"><a id="a7a6b768a13d349b8e5a88e1210e034fb"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a7a6b768a13d349b8e5a88e1210e034fb"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>bucket</b> (const size_t startTriangle, const StoppingCondition &amp;stopFunctor)</td></tr>
<tr class="separator:a7a6b768a13d349b8e5a88e1210e034fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a982d86bb64738f64e4de60017e1a4ee3"><td class="memTemplParams" colspan="2"><a id="a982d86bb64738f64e4de60017e1a4ee3"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a982d86bb64738f64e4de60017e1a4ee3"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>bucket</b> (const std::vector&lt; size_t &gt; &amp;startTriangles, const StoppingCondition &amp;stopFunctor)</td></tr>
<tr class="separator:a982d86bb64738f64e4de60017e1a4ee3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d420e96bc8c92c620b5473677173d81"><td class="memItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a1d420e96bc8c92c620b5473677173d81">getTrianglesUnderBrush</a> (const glm::vec3 &amp;originPoint, const glm::vec3 &amp;insideDirection, size_t startTriangle, const struct <a class="el" href="structpepr3d_1_1_brush_settings.html">BrushSettings</a> &amp;settings)</td></tr>
<tr class="memdesc:a1d420e96bc8c92c620b5473677173d81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spread as BFS from starting triangle, until the limits of brush settings are reached.  <a href="#a1d420e96bc8c92c620b5473677173d81">More...</a><br /></td></tr>
<tr class="separator:a1d420e96bc8c92c620b5473677173d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4907bc6f193156a3d68956b2ce622120"><td class="memTemplParams" colspan="2">template&lt;typename Object &gt; </td></tr>
<tr class="memitem:a4907bc6f193156a3d68956b2ce622120"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a4907bc6f193156a3d68956b2ce622120">getTrianglesInRadius</a> (const Object &amp;object, double radius) const</td></tr>
<tr class="memdesc:a4907bc6f193156a3d68956b2ce622120"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get all triangles that are closer to the object than radius This function operates on spherical bounds of triangles and may therefore return false positives.  <a href="#a4907bc6f193156a3d68956b2ce622120">More...</a><br /></td></tr>
<tr class="separator:a4907bc6f193156a3d68956b2ce622120"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a993a7383980e9c4aa955ae156d714f15"><td class="memTemplParams" colspan="2">template&lt;typename Object &gt; </td></tr>
<tr class="memitem:a993a7383980e9c4aa955ae156d714f15"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a993a7383980e9c4aa955ae156d714f15">isTriangleInRadius</a> (const Object &amp;object, double radius, size_t triangleIdx) const</td></tr>
<tr class="memdesc:a993a7383980e9c4aa955ae156d714f15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if distance from object to spherical boundary of a triangle is closer than radius.  <a href="#a993a7383980e9c4aa955ae156d714f15">More...</a><br /></td></tr>
<tr class="separator:a993a7383980e9c4aa955ae156d714f15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abba4d7a86b23f0d1a5aef9739d087f7d"><td class="memItemLeft" align="right" valign="top"><a id="abba4d7a86b23f0d1a5aef9739d087f7d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#abba4d7a86b23f0d1a5aef9739d087f7d">computeSdfValues</a> ()</td></tr>
<tr class="memdesc:abba4d7a86b23f0d1a5aef9739d087f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpepr3d_1_1_segmentation.html" title="Tool used for automatically separating and coloring the model into regions based on the thickness of ...">Segmentation</a> is CPU heavy because it needs to calculate a lot of data. This method allows to pre-compute the heaviest calculation. <br /></td></tr>
<tr class="separator:abba4d7a86b23f0d1a5aef9739d087f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4acf91e1482adf0a1a77d03c23c108b3"><td class="memItemLeft" align="right" valign="top"><a id="a4acf91e1482adf0a1a77d03c23c108b3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a4acf91e1482adf0a1a77d03c23c108b3">isSdfComputed</a> () const</td></tr>
<tr class="memdesc:a4acf91e1482adf0a1a77d03c23c108b3"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpepr3d_1_1_segmentation.html" title="Tool used for automatically separating and coloring the model into regions based on the thickness of ...">Segmentation</a> algorithms will not work if SDF values are not pre-computed. <br /></td></tr>
<tr class="separator:a4acf91e1482adf0a1a77d03c23c108b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4ef6e071146e7fd4e06c26dac3ffb43"><td class="memItemLeft" align="right" valign="top"><a id="ab4ef6e071146e7fd4e06c26dac3ffb43"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ab4ef6e071146e7fd4e06c26dac3ffb43">segmentation</a> (const int numberOfClusters, const float smoothingLambda, std::map&lt; size_t, std::vector&lt; size_t &gt;&gt; &amp;segmentToTriangleIds, std::unordered_map&lt; size_t, size_t &gt; &amp;triangleToSegmentMap)</td></tr>
<tr class="memdesc:ab4ef6e071146e7fd4e06c26dac3ffb43"><td class="mdescLeft">&#160;</td><td class="mdescRight">Once SDF is computed, segment the whole SurfaceMesh automatically. <br /></td></tr>
<tr class="separator:ab4ef6e071146e7fd4e06c26dac3ffb43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c8624f91ad0e27ab08dbab1ef7d2ada"><td class="memItemLeft" align="right" valign="top"><a id="a5c8624f91ad0e27ab08dbab1ef7d2ada"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getSdfValue</b> (const size_t triangleIndex) const</td></tr>
<tr class="separator:a5c8624f91ad0e27ab08dbab1ef7d2ada"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7671cab77f226a80cbea5703aba2026c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a7671cab77f226a80cbea5703aba2026c">recomputeFromData</a> ()</td></tr>
<tr class="separator:a7671cab77f226a80cbea5703aba2026c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa084c208c8fcb9802d5afd68e72b527d"><td class="memItemLeft" align="right" valign="top"><a id="aa084c208c8fcb9802d5afd68e72b527d"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aa084c208c8fcb9802d5afd68e72b527d">getTriangleDetailCount</a> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> triangleIndex) const</td></tr>
<tr class="memdesc:aa084c208c8fcb9802d5afd68e72b527d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of detailed triangles for this baseId. <br /></td></tr>
<tr class="separator:aa084c208c8fcb9802d5afd68e72b527d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa82245c699bf946457e251ad1176926c"><td class="memItemLeft" align="right" valign="top"><a id="aa82245c699bf946457e251ad1176926c"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aa82245c699bf946457e251ad1176926c">getTriangleDetailCount</a> (const size_t triangleIndex) const</td></tr>
<tr class="memdesc:aa82245c699bf946457e251ad1176926c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of detailed triangles for this baseId. <br /></td></tr>
<tr class="separator:aa82245c699bf946457e251ad1176926c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af361ddfbc36e637fe8c46b7f916c07a8"><td class="memItemLeft" align="right" valign="top"><a id="af361ddfbc36e637fe8c46b7f916c07a8"></a>
const bool *&#160;</td><td class="memItemRight" valign="bottom"><b>sdfValuesValid</b> () const</td></tr>
<tr class="separator:af361ddfbc36e637fe8c46b7f916c07a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a3c89c3e2f698d1cb25ad68767b90efc3"><td class="memItemLeft" align="right" valign="top"><a id="a3c89c3e2f698d1cb25ad68767b90efc3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a3c89c3e2f698d1cb25ad68767b90efc3">generateVertexBuffer</a> ()</td></tr>
<tr class="memdesc:a3c89c3e2f698d1cb25ad68767b90efc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates the vertex buffer linearly - adding each vertex of each triangle as a new one. We need to do this because each triangle has to be able to be colored differently, therefore no vertex sharing is possible. <br /></td></tr>
<tr class="separator:a3c89c3e2f698d1cb25ad68767b90efc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0ccbc4a83e4eeaa61fd3a7de4e0e7a9"><td class="memItemLeft" align="right" valign="top"><a id="ac0ccbc4a83e4eeaa61fd3a7de4e0e7a9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ac0ccbc4a83e4eeaa61fd3a7de4e0e7a9">generateIndexBuffer</a> ()</td></tr>
<tr class="memdesc:ac0ccbc4a83e4eeaa61fd3a7de4e0e7a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generating a linear index buffer, since we do not reuse any vertices. <br /></td></tr>
<tr class="separator:ac0ccbc4a83e4eeaa61fd3a7de4e0e7a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93545e8dae1b2cfee74fbd8c7e203389"><td class="memItemLeft" align="right" valign="top"><a id="a93545e8dae1b2cfee74fbd8c7e203389"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a93545e8dae1b2cfee74fbd8c7e203389">generateColorBuffer</a> ()</td></tr>
<tr class="memdesc:a93545e8dae1b2cfee74fbd8c7e203389"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generating triplets of colors, since we only allow a single-colored triangle. <br /></td></tr>
<tr class="separator:a93545e8dae1b2cfee74fbd8c7e203389"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d69aae6b0c09c7727d170af8b8b99b2"><td class="memItemLeft" align="right" valign="top"><a id="a7d69aae6b0c09c7727d170af8b8b99b2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a7d69aae6b0c09c7727d170af8b8b99b2">generateNormalBuffer</a> ()</td></tr>
<tr class="memdesc:a7d69aae6b0c09c7727d170af8b8b99b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a buffer of normals. Generates only "triangle normals" - all three vertices have the same normal. <br /></td></tr>
<tr class="separator:a7d69aae6b0c09c7727d170af8b8b99b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36740d72ad8b50c81f39ad506fa0281e"><td class="memItemLeft" align="right" valign="top"><a id="a36740d72ad8b50c81f39ad506fa0281e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a36740d72ad8b50c81f39ad506fa0281e">generateHighlightBuffer</a> ()</td></tr>
<tr class="memdesc:a36740d72ad8b50c81f39ad506fa0281e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a buffer of highlight information. Saves per-triangle data to each vertex. <br /></td></tr>
<tr class="separator:a36740d72ad8b50c81f39ad506fa0281e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f4435ad35840859cbb4dd949af46845"><td class="memItemLeft" align="right" valign="top"><a id="a1f4435ad35840859cbb4dd949af46845"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a1f4435ad35840859cbb4dd949af46845">generateTriangleBounds</a> ()</td></tr>
<tr class="memdesc:a1f4435ad35840859cbb4dd949af46845"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate spherical bounds for each original triangle. Used to speed up capsule querries. <br /></td></tr>
<tr class="separator:a1f4435ad35840859cbb4dd949af46845"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ffaaaa3702f7505206f4e45aebfd4a9"><td class="memItemLeft" align="right" valign="top"><a id="a9ffaaaa3702f7505206f4e45aebfd4a9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a9ffaaaa3702f7505206f4e45aebfd4a9">buildPolyhedron</a> ()</td></tr>
<tr class="memdesc:a9ffaaaa3702f7505206f4e45aebfd4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build the <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> Polyhedron construct in mPolyhedronData. Takes a bit of time to rebuild. <br /></td></tr>
<tr class="separator:a9ffaaaa3702f7505206f4e45aebfd4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff6b12b0be4f64925e3a9aa88b85bb09"><td class="memItemLeft" align="right" valign="top"><a id="aff6b12b0be4f64925e3a9aa88b85bb09"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aff6b12b0be4f64925e3a9aa88b85bb09">buildTree</a> ()</td></tr>
<tr class="memdesc:aff6b12b0be4f64925e3a9aa88b85bb09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds AABB tree over the original mesh. <br /></td></tr>
<tr class="separator:aff6b12b0be4f64925e3a9aa88b85bb09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11091a0db475dc20b6635f17afb07b23"><td class="memItemLeft" align="right" valign="top"><a id="a11091a0db475dc20b6635f17afb07b23"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a11091a0db475dc20b6635f17afb07b23">buildDetailedTree</a> ()</td></tr>
<tr class="memdesc:a11091a0db475dc20b6635f17afb07b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build AABB Tree over all triangles including details. <br /></td></tr>
<tr class="separator:a11091a0db475dc20b6635f17afb07b23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f0594ebe7f3a779dc9cf18f943f1c56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a5f0594ebe7f3a779dc9cf18f943f1c56">buildDetailedMesh</a> ()</td></tr>
<tr class="memdesc:a5f0594ebe7f3a779dc9cf18f943f1c56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> mesh over detailed triangles.  <a href="#a5f0594ebe7f3a779dc9cf18f943f1c56">More...</a><br /></td></tr>
<tr class="separator:a5f0594ebe7f3a779dc9cf18f943f1c56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa981414573779195fbfb7a64cfcbc1f1"><td class="memItemLeft" align="right" valign="top"><a id="aa981414573779195fbfb7a64cfcbc1f1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aa981414573779195fbfb7a64cfcbc1f1">correctSharedVertices</a> ()</td></tr>
<tr class="memdesc:aa981414573779195fbfb7a64cfcbc1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fixes T-junctions and unmatched vertices on edges of TriangleDetails by creating a matching vertex on the neighbouring triangle. <br /></td></tr>
<tr class="separator:aa981414573779195fbfb7a64cfcbc1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f341b26bd3ebd9158648b7d35ffa10"><td class="memItemLeft" align="right" valign="top"><a id="a69f341b26bd3ebd9158648b7d35ffa10"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a69f341b26bd3ebd9158648b7d35ffa10">invalidateTemporaryDetailedData</a> ()</td></tr>
<tr class="memdesc:a69f341b26bd3ebd9158648b7d35ffa10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invalidate temporary detailed data like detailed AABB tree and mesh. <br /></td></tr>
<tr class="separator:a69f341b26bd3ebd9158648b7d35ffa10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f3506ff18e87cd35469c89a7d7a71f3"><td class="memItemLeft" align="right" valign="top"><a id="a3f3506ff18e87cd35469c89a7d7a71f3"></a>
<a class="el" href="classpepr3d_1_1_triangle_detail.html">TriangleDetail</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>createTriangleDetail</b> (size_t triangleIdx)</td></tr>
<tr class="separator:a3f3506ff18e87cd35469c89a7d7a71f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b287e4fe195a2b1d74690ca4c387b95"><td class="memItemLeft" align="right" valign="top"><a id="a6b287e4fe195a2b1d74690ca4c387b95"></a>
<a class="el" href="classpepr3d_1_1_triangle_detail.html">TriangleDetail</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getTriangleDetail</b> (const size_t triangleIndex)</td></tr>
<tr class="separator:a6b287e4fe195a2b1d74690ca4c387b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c14c117f916e93e9578087dd85fe3ef"><td class="memItemLeft" align="right" valign="top"><a id="a8c14c117f916e93e9578087dd85fe3ef"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>removeTriangleDetail</b> (size_t triangleIndex)</td></tr>
<tr class="separator:a8c14c117f916e93e9578087dd85fe3ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeabf9a91453ddd3d744ccbc862583874"><td class="memItemLeft" align="right" valign="top"><a id="aeabf9a91453ddd3d744ccbc862583874"></a>
std::array&lt; int, 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aeabf9a91453ddd3d744ccbc862583874">gatherNeighbours</a> (const size_t triIndex) const</td></tr>
<tr class="memdesc:aeabf9a91453ddd3d744ccbc862583874"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by BFS in bucket painting. Aggregates the neighbours of the triangle at triIndex by looking into the <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> Polyhedron construct. <br /></td></tr>
<tr class="separator:aeabf9a91453ddd3d744ccbc862583874"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1638b74697c69d6dfb5125092130a9a0"><td class="memItemLeft" align="right" valign="top"><a id="a1638b74697c69d6dfb5125092130a9a0"></a>
std::array&lt; std::optional&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt;, 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a1638b74697c69d6dfb5125092130a9a0">gatherNeighbours</a> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> triIndex) const</td></tr>
<tr class="memdesc:a1638b74697c69d6dfb5125092130a9a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by BFS in bucket painting. Aggregates the neighbours of the triangle at triIndex by looking into the <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> Polyhedron construct. <br /></td></tr>
<tr class="separator:a1638b74697c69d6dfb5125092130a9a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae361aadf7f7b305ec57f7d0c3f5ec076"><td class="memTemplParams" colspan="2"><a id="ae361aadf7f7b305ec57f7d0c3f5ec076"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:ae361aadf7f7b305ec57f7d0c3f5ec076"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ae361aadf7f7b305ec57f7d0c3f5ec076">addNeighboursToQueue</a> (const size_t currentVertex, std::unordered_set&lt; size_t &gt; &amp;alreadyVisited, std::deque&lt; size_t &gt; &amp;toVisit, const StoppingCondition &amp;stopFunctor) const</td></tr>
<tr class="memdesc:ae361aadf7f7b305ec57f7d0c3f5ec076"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by BFS in bucket painting. Manages the queue used to search through the graph. <br /></td></tr>
<tr class="separator:ae361aadf7f7b305ec57f7d0c3f5ec076"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a598ec7cc38c6849908d97fb1ee482db5"><td class="memTemplParams" colspan="2"><a id="a598ec7cc38c6849908d97fb1ee482db5"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a598ec7cc38c6849908d97fb1ee482db5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a598ec7cc38c6849908d97fb1ee482db5">addNeighboursToQueue</a> (const <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> currentVertex, std::unordered_set&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; &amp;alreadyVisited, std::deque&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; &amp;toVisit, const StoppingCondition &amp;stopFunctor) const</td></tr>
<tr class="memdesc:a598ec7cc38c6849908d97fb1ee482db5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by BFS in bucket painting. Manages the queue used to search through the graph. <br /></td></tr>
<tr class="separator:a598ec7cc38c6849908d97fb1ee482db5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dbc2ee792c43857a7d9b1d16b3320df"><td class="memItemLeft" align="right" valign="top"><a id="a2dbc2ee792c43857a7d9b1d16b3320df"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>computeSdf</b> ()</td></tr>
<tr class="separator:a2dbc2ee792c43857a7d9b1d16b3320df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab00aaf9b4fdf18c56d57e8f0d646ab45"><td class="memItemLeft" align="right" valign="top"><a id="ab00aaf9b4fdf18c56d57e8f0d646ab45"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>segment</b> (const int numberOfClusters, const float smoothingLambda, std::map&lt; size_t, std::vector&lt; size_t &gt;&gt; &amp;segmentToTriangleIds, std::unordered_map&lt; size_t, size_t &gt; &amp;triangleToSegmentMap)</td></tr>
<tr class="separator:ab00aaf9b4fdf18c56d57e8f0d646ab45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a531c94e0221f47462af2c9b5f0961e56"><td class="memTemplParams" colspan="2"><a id="a531c94e0221f47462af2c9b5f0961e56"></a>
template&lt;class Archive &gt; </td></tr>
<tr class="memitem:a531c94e0221f47462af2c9b5f0961e56"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a531c94e0221f47462af2c9b5f0961e56">save</a> (Archive &amp;saveArchive) const</td></tr>
<tr class="memdesc:a531c94e0221f47462af2c9b5f0961e56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to allow the Cereal library to serialize this class. Used for saving a .p3d project. <br /></td></tr>
<tr class="separator:a531c94e0221f47462af2c9b5f0961e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a8b9b75eb5033c9af30570ace03e921"><td class="memTemplParams" colspan="2"><a id="a2a8b9b75eb5033c9af30570ace03e921"></a>
template&lt;class Archive &gt; </td></tr>
<tr class="memitem:a2a8b9b75eb5033c9af30570ace03e921"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a2a8b9b75eb5033c9af30570ace03e921">load</a> (Archive &amp;loadArchive)</td></tr>
<tr class="memdesc:a2a8b9b75eb5033c9af30570ace03e921"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to allow the Cereal library to deserialize this class. Used for loading a .p3d project. <br /></td></tr>
<tr class="separator:a2a8b9b75eb5033c9af30570ace03e921"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a383d95503293a68382275bc269280690"><td class="memTemplParams" colspan="2"><a id="a383d95503293a68382275bc269280690"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a383d95503293a68382275bc269280690"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>bucketSpread</b> (const StoppingCondition &amp;stopFunctor, std::deque&lt; size_t &gt; &amp;toVisit, std::unordered_set&lt; size_t &gt; &amp;alreadyVisited)</td></tr>
<tr class="separator:a383d95503293a68382275bc269280690"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d2b971ea77ab01284de6803ab7642c6"><td class="memTemplParams" colspan="2"><a id="a4d2b971ea77ab01284de6803ab7642c6"></a>
template&lt;typename StoppingCondition &gt; </td></tr>
<tr class="memitem:a4d2b971ea77ab01284de6803ab7642c6"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>bucketSpread</b> (const StoppingCondition &amp;stopFunctor, std::deque&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; &amp;toVisit, std::unordered_set&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; &amp;alreadyVisited)</td></tr>
<tr class="separator:a4d2b971ea77ab01284de6803ab7642c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ae72aa9945025d6609ef0fe5beab238f9"><td class="memItemLeft" align="right" valign="top"><a id="ae72aa9945025d6609ef0fe5beab238f9"></a>
std::vector&lt; <a class="el" href="classpepr3d_1_1_data_triangle.html">DataTriangle</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ae72aa9945025d6609ef0fe5beab238f9">mTriangles</a></td></tr>
<tr class="memdesc:ae72aa9945025d6609ef0fe5beab238f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Triangle soup of the original model mesh, containing CGAL::Triangle_3 data for AABB tree. <br /></td></tr>
<tr class="separator:ae72aa9945025d6609ef0fe5beab238f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ab785869db636d7dc75d192cbd34c30"><td class="memItemLeft" align="right" valign="top"><a id="a2ab785869db636d7dc75d192cbd34c30"></a>
std::vector&lt; std::pair&lt; Point3, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a2ab785869db636d7dc75d192cbd34c30">mTriangleBounds</a></td></tr>
<tr class="memdesc:a2ab785869db636d7dc75d192cbd34c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores a rough collision sphere for each triangle in a form of a center point + radius. Used to speed up capsule/cylinder querries on original triangles. <br /></td></tr>
<tr class="separator:a2ab785869db636d7dc75d192cbd34c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a899b65a3e64dc086f6275e4a5b616b62"><td class="memItemLeft" align="right" valign="top"><a id="a899b65a3e64dc086f6275e4a5b616b62"></a>
std::map&lt; size_t, <a class="el" href="classpepr3d_1_1_triangle_detail.html">TriangleDetail</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a899b65a3e64dc086f6275e4a5b616b62">mTriangleDetails</a></td></tr>
<tr class="memdesc:a899b65a3e64dc086f6275e4a5b616b62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of triangle details. (Detailed triangles that replace the original) <br /></td></tr>
<tr class="separator:a899b65a3e64dc086f6275e4a5b616b62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee03bb37cbf326e4594b58edacbc17c0"><td class="memItemLeft" align="right" valign="top"><a id="aee03bb37cbf326e4594b58edacbc17c0"></a>
std::map&lt; size_t, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#aee03bb37cbf326e4594b58edacbc17c0">mTriangleDetailColorBufferStart</a></td></tr>
<tr class="memdesc:aee03bb37cbf326e4594b58edacbc17c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of baseTriangleId -&gt; Index of first detail triangle color in mOgl.colorBuffer. <br /></td></tr>
<tr class="separator:aee03bb37cbf326e4594b58edacbc17c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addf4b4de09e100d6e4279d21e01a05eb"><td class="memItemLeft" align="right" valign="top"><a id="addf4b4de09e100d6e4279d21e01a05eb"></a>
<a class="el" href="structpepr3d_1_1_geometry_1_1_open_gl_data.html">OpenGlData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#addf4b4de09e100d6e4279d21e01a05eb">mOgl</a></td></tr>
<tr class="memdesc:addf4b4de09e100d6e4279d21e01a05eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">All open GL buffers. <br /></td></tr>
<tr class="separator:addf4b4de09e100d6e4279d21e01a05eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a040e500c0481caafb88141d8e42128bb"><td class="memItemLeft" align="right" valign="top"><a id="a040e500c0481caafb88141d8e42128bb"></a>
<a class="el" href="structpepr3d_1_1_polyhedron_data.html">PolyhedronData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a040e500c0481caafb88141d8e42128bb">mPolyhedronData</a></td></tr>
<tr class="memdesc:a040e500c0481caafb88141d8e42128bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polyhedron structure. <br /></td></tr>
<tr class="separator:a040e500c0481caafb88141d8e42128bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9f70b2e8bbd7a9baa001b981c6215aa"><td class="memItemLeft" align="right" valign="top"><a id="ab9f70b2e8bbd7a9baa001b981c6215aa"></a>
std::unique_ptr&lt; Tree &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#ab9f70b2e8bbd7a9baa001b981c6215aa">mTree</a></td></tr>
<tr class="memdesc:ab9f70b2e8bbd7a9baa001b981c6215aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">AABB tree from the <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> library, to find intersections with rays generated by user mouse clicks and the mesh. <br /></td></tr>
<tr class="separator:ab9f70b2e8bbd7a9baa001b981c6215aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1108d0993ef23fb246ae10244a0c2240"><td class="memItemLeft" align="right" valign="top"><a id="a1108d0993ef23fb246ae10244a0c2240"></a>
std::unique_ptr&lt; Tree &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a1108d0993ef23fb246ae10244a0c2240">mTreeDetailed</a></td></tr>
<tr class="memdesc:a1108d0993ef23fb246ae10244a0c2240"><td class="mdescLeft">&#160;</td><td class="mdescRight">AABB tree built over all triangles, including details. This tree is invalidated on every operation that changes triangleDetail topology. <br /></td></tr>
<tr class="separator:a1108d0993ef23fb246ae10244a0c2240"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73e2b6c74082b59b5d99d58e018e5bff"><td class="memItemLeft" align="right" valign="top"><a id="a73e2b6c74082b59b5d99d58e018e5bff"></a>
std::unique_ptr&lt; PolyhedronData::Mesh &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a73e2b6c74082b59b5d99d58e018e5bff">mMeshDetailed</a></td></tr>
<tr class="memdesc:a73e2b6c74082b59b5d99d58e018e5bff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Surface mesh with detail triangles included. <br /></td></tr>
<tr class="separator:a73e2b6c74082b59b5d99d58e018e5bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a111ad109dfecf9e9d3371291d1271ac9"><td class="memItemLeft" align="right" valign="top"><a id="a111ad109dfecf9e9d3371291d1271ac9"></a>
std::unordered_map&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a>, PolyhedronData::face_descriptor &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mMeshDetailedFaceDescs</b></td></tr>
<tr class="separator:a111ad109dfecf9e9d3371291d1271ac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf2777044b00de455536e8bc0efc3b07"><td class="memItemLeft" align="right" valign="top"><a id="adf2777044b00de455536e8bc0efc3b07"></a>
PolyhedronData::Mesh::Property_map&lt; PolyhedronData::face_descriptor, <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#adf2777044b00de455536e8bc0efc3b07">mMeshDetailedIdMap</a></td></tr>
<tr class="memdesc:adf2777044b00de455536e8bc0efc3b07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map converting a face_descriptor into an ID. <br /></td></tr>
<tr class="separator:adf2777044b00de455536e8bc0efc3b07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af247be6afb090aa4edecb32786103ae1"><td class="memItemLeft" align="right" valign="top"><a id="af247be6afb090aa4edecb32786103ae1"></a>
std::unique_ptr&lt; BoundingBox &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#af247be6afb090aa4edecb32786103ae1">mBoundingBox</a></td></tr>
<tr class="memdesc:af247be6afb090aa4edecb32786103ae1"><td class="mdescLeft">&#160;</td><td class="mdescRight">AABB of the whole mesh. <br /></td></tr>
<tr class="separator:af247be6afb090aa4edecb32786103ae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a435bf3487105e8fb7867614845d69885"><td class="memItemLeft" align="right" valign="top"><a id="a435bf3487105e8fb7867614845d69885"></a>
<a class="el" href="classpepr3d_1_1_color_manager.html">ColorManager</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a435bf3487105e8fb7867614845d69885">mColorManager</a></td></tr>
<tr class="memdesc:a435bf3487105e8fb7867614845d69885"><td class="mdescLeft">&#160;</td><td class="mdescRight">A vector based map mapping size_t into ci::ColorA. <br /></td></tr>
<tr class="separator:a435bf3487105e8fb7867614845d69885"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47baed18f665dbbe1c69b9b400ace85c"><td class="memItemLeft" align="right" valign="top"><a id="a47baed18f665dbbe1c69b9b400ace85c"></a>
<a class="el" href="structpepr3d_1_1_geometry_1_1_area_highlight.html">AreaHighlight</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a47baed18f665dbbe1c69b9b400ace85c">mAreaHighlight</a></td></tr>
<tr class="memdesc:a47baed18f665dbbe1c69b9b400ace85c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct representing a highlight around user's cursor. <br /></td></tr>
<tr class="separator:a47baed18f665dbbe1c69b9b400ace85c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bf613cec3cd854058e183f199542ada"><td class="memItemLeft" align="right" valign="top"><a id="a0bf613cec3cd854058e183f199542ada"></a>
std::unique_ptr&lt; <a class="el" href="structpepr3d_1_1_geometry_progress.html">GeometryProgress</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpepr3d_1_1_geometry.html#a0bf613cec3cd854058e183f199542ada">mProgress</a></td></tr>
<tr class="memdesc:a0bf613cec3cd854058e183f199542ada"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current progress of import, tree, polyhedron building, export, etc. <br /></td></tr>
<tr class="separator:a0bf613cec3cd854058e183f199542ada"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ab2f44cbb59a08132f4c843e5225bba0e"><td class="memItemLeft" align="right" valign="top"><a id="ab2f44cbb59a08132f4c843e5225bba0e"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>cereal::access</b></td></tr>
<tr class="separator:ab2f44cbb59a08132f4c843e5225bba0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The whole geometry of a model that the user is painting. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a5f0594ebe7f3a779dc9cf18f943f1c56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f0594ebe7f3a779dc9cf18f943f1c56">&#9670;&nbsp;</a></span>buildDetailedMesh()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::buildDetailedMesh </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Build a <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> mesh over detailed triangles. </p>
<p>Yes, we are about to hash floating point values. These values come from <a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> exact kernel, so they should be bit-equal and safe to hash. There is no betters way to get indices before this, as different color parts are stored in different polygons.</p>

</div>
</div>
<a id="ae6d2ae86fca37592a5dbb93784ca4ef0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d2ae86fca37592a5dbb93784ca4ef0">&#9670;&nbsp;</a></span>changeColorIds()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ColorFunc &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::changeColorIds </td>
          <td>(</td>
          <td class="paramtype">const ColorFunc &amp;&#160;</td>
          <td class="paramname"><em>colorFunc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Change all color ID's from one to another. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ColorFunc</td><td>functor of type size_t func(size_t originalColor), that returns the new color ID </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a4907bc6f193156a3d68956b2ce622120"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4907bc6f193156a3d68956b2ce622120">&#9670;&nbsp;</a></span>getTrianglesInRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Object &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;size_t&gt; pepr3d::Geometry::getTrianglesInRadius </td>
          <td>(</td>
          <td class="paramtype">const Object &amp;&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get all triangles that are closer to the object than radius This function operates on spherical bounds of triangles and may therefore return false positives. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">object</td><td><a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> Object - point, line, etc </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a1d420e96bc8c92c620b5473677173d81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d420e96bc8c92c620b5473677173d81">&#9670;&nbsp;</a></span>getTrianglesUnderBrush()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; size_t &gt; pepr3d::Geometry::getTrianglesUnderBrush </td>
          <td>(</td>
          <td class="paramtype">const glm::vec3 &amp;&#160;</td>
          <td class="paramname"><em>originPoint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const glm::vec3 &amp;&#160;</td>
          <td class="paramname"><em>insideDirection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>startTriangle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct <a class="el" href="structpepr3d_1_1_brush_settings.html">BrushSettings</a> &amp;&#160;</td>
          <td class="paramname"><em>settings</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Spread as BFS from starting triangle, until the limits of brush settings are reached. </p>
<p>Stop when the triangle has no intersection with the area highlight </p>

</div>
</div>
<a id="ae68a633ab4ab435156e0b03e64c9ede9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae68a633ab4ab435156e0b03e64c9ede9">&#9670;&nbsp;</a></span>intersectDetailedMesh()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::optional&lt; <a class="el" href="structpepr3d_1_1_detailed_triangle_id.html">DetailedTriangleId</a> &gt; pepr3d::Geometry::intersectDetailedMesh </td>
          <td>(</td>
          <td class="paramtype">const ci::Ray &amp;&#160;</td>
          <td class="paramname"><em>ray</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Intersects the detailed mesh with the given ray and returns the ID of the triangle intersected, if it exists. </p>
<p>No intersection detected. </p>

</div>
</div>
<a id="ace58dc7a4182240000e9b773cb8da4ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace58dc7a4182240000e9b773cb8da4ee">&#9670;&nbsp;</a></span>intersectMesh()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::optional&lt; size_t &gt; pepr3d::Geometry::intersectMesh </td>
          <td>(</td>
          <td class="paramtype">const ci::Ray &amp;&#160;</td>
          <td class="paramname"><em>ray</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Intersects the mesh with the given ray and returns the index of the triangle intersected, if it exists. Example use: generate ray based on a mouse click, call this method, then call setTriangleColor. </p>
<p>No intersection detected. </p>

</div>
</div>
<a id="a993a7383980e9c4aa955ae156d714f15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a993a7383980e9c4aa955ae156d714f15">&#9670;&nbsp;</a></span>isTriangleInRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Object &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pepr3d::Geometry::isTriangleInRadius </td>
          <td>(</td>
          <td class="paramtype">const Object &amp;&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>triangleIdx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Test if distance from object to spherical boundary of a triangle is closer than radius. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">object</td><td><a class="el" href="namespace_c_g_a_l.html" title="CGAL Serialization functions.">CGAL</a> Object - point, line, etc </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true, object is closer than radius to the triangle bound shpere </dd></dl>

</div>
</div>
<a id="a027715ec109b060ffc8b420947c4fde0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a027715ec109b060ffc8b420947c4fde0">&#9670;&nbsp;</a></span>loadNewGeometry()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::loadNewGeometry </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>fileName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Loads new geometry into the private data, rebuilds the buffers and other data structures automatically. </p>
<p>Import the object via Assimp</p>
<p>Fill triangle data to compute AABB</p>
<p>Fill Polyhedron data to compute SurfaceMesh</p>
<p>Get the generated color palette of the model, replace the current one</p>
<p>Do the computations in parallel </p>

</div>
</div>
<a id="a6c6b8ef6f157f8bb818e38f6e2e49b37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c6b8ef6f157f8bb818e38f6e2e49b37">&#9670;&nbsp;</a></span>paintWithShape() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::paintWithShape </td>
          <td>(</td>
          <td class="paramtype">const ci::Ray &amp;&#160;</td>
          <td class="paramname"><em>ray</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; Point3 &gt; &amp;&#160;</td>
          <td class="paramname"><em>shape</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>color</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>paintBackfaces</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Paint area with a shaped brush. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ray</td><td>Ray along which to project the shape, using orthogonal projection </td></tr>
    <tr><td class="paramname">shape</td><td>Points in world space representing a polygonal shape </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a152673dacbe299a55ee9dc6a2403d6a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a152673dacbe299a55ee9dc6a2403d6a5">&#9670;&nbsp;</a></span>paintWithShape() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::paintWithShape </td>
          <td>(</td>
          <td class="paramtype">const ci::Ray &amp;&#160;</td>
          <td class="paramname"><em>ray</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; DataTriangle::Triangle &gt; &amp;&#160;</td>
          <td class="paramname"><em>triangles</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>color</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Paint area with a shaped brush. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ray</td><td>Ray along which to project the shape, using orthogonal projection </td></tr>
    <tr><td class="paramname">triangles</td><td>Triangles in world space representing the shape </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a7671cab77f226a80cbea5703aba2026c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7671cab77f226a80cbea5703aba2026c">&#9670;&nbsp;</a></span>recomputeFromData()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::recomputeFromData </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Async build the polyhedron data structure</p>
<p>Async build the AABB tree</p>
<p>Get the new bounding box</p>
<p>Generate new vertex buffer</p>
<p>Generate new index buffer</p>
<p>Generate new color buffer from triangle color data</p>
<p>Generate new normal buffer, copying the triangle normal to each vertex</p>
<p>Wait for building the polyhedron and tree </p>

</div>
</div>
<a id="aa473f80280346656024fc494994c065e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa473f80280346656024fc494994c065e">&#9670;&nbsp;</a></span>setTriangleColor()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pepr3d::Geometry::setTriangleColor </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>triangleIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>newColor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set new triangle color. </p>
<p>Change it in the triangle soup </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>D:/Home/MFF/1-Mgr/projekt/pepr3d/src/geometry/<a class="el" href="_geometry_8h_source.html">Geometry.h</a></li>
<li>D:/Home/MFF/1-Mgr/projekt/pepr3d/src/geometry/Geometry.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacepepr3d.html">pepr3d</a></li><li class="navelem"><a class="el" href="classpepr3d_1_1_geometry.html">Geometry</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
